Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mkkeems/moobimood
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0b3aa19a7c
Choose a base ref
...
head repository: mkkeems/moobimood
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 53a951c3cf
Choose a head ref
  • 1 commit
  • 1 file changed
  • 1 contributor

Commits on Dec 13, 2024

  1. reorganize prisma schema file for better readability

    mkkeems committed Dec 13, 2024
    Copy the full SHA
    53a951c View commit details
Showing with 90 additions and 63 deletions.
  1. +90 āˆ’63 prisma/schema.prisma
153 changes: 90 additions & 63 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
@@ -14,131 +14,158 @@ datasource db {
}

model User {
id String @id @default(cuid())
email String @unique
firstName String?
lastName String?
nickname String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
email String @unique
firstName String?
lastName String?
nickname String @unique
movieReviews MovieReview[]
movieStandoutScenes MovieStandoutScene[]
movieStandoutQuotes MovieStandoutQuote[]
}

model Movie {
id String @id @default(cuid())
originalTitle String
releaseDate DateTime
runtime Int
posterPath String
imdbId String
releaseYear Int
genre String
overview String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
originalTitle String
releaseDate DateTime
runtime Int
posterPath String
imdbId String
releaseYear Int
genre String
overview String?
movieReviews MovieReview[]
movieStandoutScenes MovieStandoutScene[]
movieStandoutQuotes MovieStandoutQuote[]
}

// the categories questions fall under
model MovieReviewQuestionCategory {
id String @id @default(cuid())
name String @unique
id String @id @default(cuid())
name String @unique
description String?
questions MovieReviewQuestion[]
questions MovieReviewQuestion[]
}

// the questions for a review
model MovieReviewQuestion {
id String @id @default(cuid())
id String @id @default(cuid())
question String
topic String
categoryId String
category MovieReviewQuestionCategory @relation(fields: [categoryId], references: [id])
options MovieReviewQuestionResponseOption[]
movieReviewResponses MovieReviewResponse[]
categoryId String
category MovieReviewQuestionCategory @relation(fields: [categoryId], references: [id])
@@unique([question, categoryId])
}

// the multiple choice options for a question
model MovieReviewQuestionResponseOption {
id String @id @default(cuid())
questionId String
question MovieReviewQuestion @relation(fields: [questionId], references: [id])
id String @id @default(cuid())
optionText String
movieReviewResponses MovieReviewResponse[]
questionId String
question MovieReviewQuestion @relation(fields: [questionId], references: [id])
@@unique([optionText, questionId])
}

// review submitted by a user
model MovieReview {
id String @id @default(cuid())
movieId String
movie Movie @relation(fields: [movieId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
responses MovieReviewResponse[]
finalVerdict MovieReviewFinalVerdict?
movieStandoutScenes MovieStandoutScene[]
movieStandoutQuotes MovieStandoutQuote[]
movieId String
movie Movie @relation(fields: [movieId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
}

// response of a user to a question in a review
model MovieReviewResponse {
id String @id @default(cuid())
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
questionId String
question MovieReviewQuestion @relation(fields: [questionId], references: [id])
id String @id @default(cuid())
preference PreferenceType // "AmazingšŸ‘/HorriblešŸ‘Ž/Don't care🤷" about this aspect
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
questionId String
question MovieReviewQuestion @relation(fields: [questionId], references: [id])
selectedOptionId String?
selectedOption MovieReviewQuestionResponseOption? @relation(fields: [selectedOptionId], references: [id])
preference PreferenceType // "AmazingšŸ‘/HorriblešŸ‘Ž/Don't care🤷" about this aspect
}

model MovieReviewFinalVerdict {
id String @id @default(cuid())
reviewId String @unique
review MovieReview @relation(fields: [reviewId], references: [id])
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
overallOpinion OverallOpinion // (Masterpiece, Meh, Garbage)
moodTags String[]
additionalComments String? // Optional long text response for additional comments
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
reviewId String @unique
review MovieReview @relation(fields: [reviewId], references: [id])
}

model MovieStandoutScene {
id String @id @default(cuid())
movieId String
movie Movie @relation(fields: [movieId], references: [id])
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
scene String
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
movieId String
movie Movie @relation(fields: [movieId], references: [id])
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
}

model MovieStandoutQuote {
id String @id @default(cuid())
movieId String
movie Movie @relation(fields: [movieId], references: [id])
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
quote String
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
movieId String
movie Movie @relation(fields: [movieId], references: [id])
reviewId String
review MovieReview @relation(fields: [reviewId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])
}

enum PreferenceType {